﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.Mvc;
using EGym.BL.ControleSessao;
using EGym.BL.Exceptions;
using EGym.Data;

namespace EGym.BL.Forms
{
    public abstract class BaseForm
    {
        #region Constantes
        private const string GUID_COOKIE_KEY = "SessionGuid";
        private const string CSS_CLASS_DATE_INPUT = "dateInput";
        private const string HTML_ATTRIBUTE_CLASS = "class";

        #endregion

        #region Variáveis

        private IDictionary<string, object> atributoCaixaTextoData;
        #endregion

        #region Propriedades
        internal IEnumerable<BussinessLayerEntryException> BussinessLayerEntryExceptions { get; set; }

        public IDictionary<string, object> AtributoCaixaTextoData
        {
            get
            {
                return atributoCaixaTextoData; 
            }
        }
        #endregion

        #region Construtores
        protected BaseForm()
        {
            BussinessLayerEntryExceptions = new List<BussinessLayerEntryException>();

            Inicializa();
        }
        #endregion

        #region Métodos

        #region Publicos

        public virtual bool DadosSaoValidos()
        {
            return BussinessLayerEntryExceptions != null ? BussinessLayerEntryExceptions.Count().Equals(0) : true;
        }

        #endregion

        #region Privados
        private void Inicializa()
        {
            InicializaVariaveis();
        }

        private void InicializaVariaveis()
        {
            InicializaAtributoCaixaTextoData();
        }

        private void InicializaAtributoCaixaTextoData()
        {
            atributoCaixaTextoData = new Dictionary<string, object>();

            atributoCaixaTextoData.Add(HTML_ATTRIBUTE_CLASS, CSS_CLASS_DATE_INPUT);
        }
        #endregion

        #endregion
    }
}
